#ifndef __HEMUIRParse_H__
#define __HEMUIRParse_H__


#include <iostream>
//#include <istream>
#include <vector>
#include <string>
#include "HEMUIRCode.h"


bool set_imm_val(const std::vector<std::string>& toks, size_t pos, HEMUIRVar& imm);

HEMUIRBtype get_btype(std::string tp);

size_t set_type(const std::vector<std::string>& toks, size_t pos, HEMUIRType& type);

bool set_imm(const std::vector<std::string>& toks, size_t pos, HEMUIRVar& imm);

bool set_opnd(const std::vector<std::string>& toks, size_t pos, HEMUIROpnd& opnd);

bool set_opnd(const std::vector<std::string>& toks, size_t pos, HEMUIRBtype tp, HEMUIROpnd& opnd);

bool rm_comm(std::string& line);

bool parse(const std::string& line, const std::string& delim, std::vector<std::string>& toks);

CMPCond get_cond(const std::string& tok);

bool set_fargs(const std::vector<std::string>& toks, size_t pos, std::vector<HEMUIROpnd>& fargs);

bool op_nop_ir(const std::vector<std::string>& toks, HEMUIRInst& inst);
bool op_ret_ir(const std::vector<std::string>& toks, HEMUIRInst& inst);
bool op_br_ir(const std::vector<std::string>& toks, HEMUIRInst& inst);
bool op_fneg_ir(const std::vector<std::string>& toks, HEMUIRInst& inst);
bool op_calc_ir(const std::vector<std::string>& toks, HEMUIRInst& inst);
bool op_alloc_ir(const std::vector<std::string>& toks, HEMUIRInst& inst);
bool op_load_ir(const std::vector<std::string>& toks, HEMUIRInst& inst);
bool op_store_ir(const std::vector<std::string>& toks, HEMUIRInst& inst);
bool op_cmp_ir(const std::vector<std::string>& toks, HEMUIRInst& inst);
bool op_call_ir(const std::vector<std::string>& toks, HEMUIRInst& inst);











#endif